In some computing networks, shared resources are provided, on demand, to computing systems and other devices connected to the network by way of deploying one or more virtual machines (VMs). A VM generally runs as a software application and supports services that provide a platform-independent programming environment that abstract away details of the underlying hardware or operating system for the party requesting the respective services.
VMs may be provisioned by a management layer (e.g., Infrastructure as a Service (IaaS)) that is centrally implemented as a part of the network architecture. Optimizing and orchestrating the provisioning and placement of VMs on a cluster of physical servers or hosts is generally critical to the efficient use of the available resources in the network. Particularly, in light of the growing number of system management domains (e.g., performance, availability, security, financial and administrative domains) the location of placement and deployment of various VM resources are further scrutinized.
Accordingly, there is a growing need for an open, extensible, scalable, and high-quality placement and deployment system to manage one or more commonly-occurring events in a virtualized computing environment. Such events include, for example, the deployment of new VMs into a cluster of hosts, update or removal of existing VMs, addition or removal of host machines to host clusters, timely response to host failures, host predicted failure or scheduled host outage, administration of user directed migration and validation of suitability of a host for a VM placement, and periodic replacement of VMs or hosts for maintaining various domain goals enhance performance and preserve energy.